Here are the notes I made while working through the ZIP file specification.





For each file:





        local file header signature     4 bytes  (0x04034b50)


        version needed to extract       2 bytes


        general purpose bit flag        2 bytes


        compression method              2 bytes


        last mod file time              2 bytes


        last mod file date              2 bytes


        crc-32                          4 bytes


        compressed size                 4 bytes


        uncompressed size               4 bytes


        file name length                2 bytes


        extra field length              2 bytes





|sig |v |g |c |t |d |crc |csz |usz |n |x |


 PK.. ## 00 00 ?? ?? xxxx ???? ???? ?? 00


<file name><file data>





Central directory:





        central file header signature   4 bytes  (0x02014b50)


        version made by                 2 bytes


        version needed to extract       2 bytes  *


        general purpose bit flag        2 bytes  *


        compression method              2 bytes  *


        last mod file time              2 bytes  *


        last mod file date              2 bytes  *


        crc-32                          4 bytes  *


        compressed size                 4 bytes  *


        uncompressed size               4 bytes  *


        file name length                2 bytes  *


        extra field length              2 bytes  *


        file comment length             2 bytes


        disk number start               2 bytes


        internal file attributes        2 bytes


        external file attributes        4 bytes


        relative offset of local header 4 bytes





        file name (variable size)


        extra field (variable size)


        file comment (variable size)





|sig |vm|vx|g |c |d |t |crc |csz |usz |n |x |cm|dn|ia|xa  |roff|


 PK.. ## ## 00 00 ?? ?? xxxx ???? ???? ?? 00 00 00 00 xxxx ????





End of central directory:





        end of central dir signature    4 bytes  (0x06054b50)


        number of this disk             2 bytes


        number of the disk with the


        start of the central directory  2 bytes


        total number of entries in the


        central directory on this disk  2 bytes


        total number of entries in


        the central directory           2 bytes


        size of the central directory   4 bytes


        offset of start of central


        directory with respect to


        the starting disk number        4 bytes


        .ZIP file comment length        2 bytes


        .ZIP file comment       (variable size)





|sig |n1|n2|e |ne|size|off |cm|


 PK.. 00 00 ?? ?? ???? ???? 00


